package com.sxt.pro.controller;

import java.util.Date;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sxt.pro.pojo.Person;
import com.sxt.pro.service.PersonService;
import com.sxt.pro.vo.PersonVo;
import com.sxt.sys.common.AppFileUtils;
import com.sxt.sys.common.Constast;
import com.sxt.sys.common.DataGridView;
import com.sxt.sys.common.ResultObj;
import com.sxt.sys.common.WebUtils;


/**  

* @Description: 员工控制层

* @author xinxiaokang  

* @date 2020年11月19日 上午11:26:09

*/
@RestController
@RequestMapping("/Person")
public class PersonController {
	
	@Autowired
	private PersonService personService;
	
	/**
	 * 查询员工分页列表
	 * @param personVo
	 * @return
	 */
	@RequestMapping("/loadAllPerson")
	public DataGridView loadAllPerson(PersonVo personVo){
		//存入网点编号和用户名放入session中
		 int banknbr = (int) WebUtils.getSession().getAttribute("banknbr");
		 personVo.setBanknbr(banknbr);
		//初始化 当前页、每页显示条数
		IPage<Person> page = new Page<>(personVo.getPage(), personVo.getLimit());
		//封装对象查询条件
		QueryWrapper<Person> queryWrapper = new QueryWrapper<Person>();
		//筛选条件：网点编号
		  queryWrapper.eq(personVo.getBanknbr()!=null&&personVo.getBanknbr()!=0,"banknbr",personVo.getBanknbr());
		//筛选条件:员工名称
		queryWrapper.like(StringUtils.isNotBlank(personVo.getPersonname()), "personname", personVo.getPersonname());
		//筛选条件：大于开始时间
		queryWrapper.ge(personVo.getStartTime()!=null, "persontime", personVo.getStartTime());
		//筛选条件：小于结束时间
		queryWrapper.le(personVo.getEndTime()!=null, "persontime", personVo.getEndTime());
		queryWrapper.orderByDesc("persontime");
		//获取分页数据
		this.personService.page(page, queryWrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}
	
	/**
	 * 添加员工
	 * @param personVo
	 * @return
	 */
	@RequestMapping("addPerson")
	public ResultObj addPerson(PersonVo personVo) {
		//添加时，网点默认
		int banknbr = (int) WebUtils.getSession().getAttribute("banknbr");
		personVo.setBanknbr(banknbr);
		try {
			if(personVo.getPersonimage()!=null&&personVo.getPersonimage().endsWith("_temp")) {
				//图片名称
				String newName=AppFileUtils.renameFile(personVo.getPersonimage());
				personVo.setPersonimage(newName);
				personVo.setPersontime(new Date());
			}
			this.personService.save(personVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}

	/**
	 * 修改员工
	 * @param personVo
	 * @return
	 */
	@RequestMapping("updatePerson")
	public ResultObj updatePerson(PersonVo personVo) {
		try {
			//说明是不默认图片
			if(!(personVo.getPersonimage()!=null&&personVo.getPersonimage().equals(Constast.IMAGES_DEFAULTGOODSIMG_PNG))) {
				if(personVo.getPersonimage().endsWith("_temp")) {
					String newName=AppFileUtils.renameFile(personVo.getPersonimage());
					personVo.setPersonimage(newName);
					//删除原先的图片
					String oldPath=this.personService.getById(personVo.getId()).getPersonimage();
					if (!(oldPath.equals(Constast.IMAGES_DEFAULTGOODSIMG_PNG))) {
						AppFileUtils.removeFileByPath(oldPath);
					}
				}
			}
			this.personService.updateById(personVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}

	/**
	 * 删除员工
	 * @param id
	 * @param image
	 * @return
	 */
	@RequestMapping("deletePerson")
	public ResultObj deletePerson(Integer id,String personimage) {
		try {
			//删除原文件
			if (!personimage.isEmpty() && !personimage.equals("images/defaultgoodsimg.png")) {
				AppFileUtils.removeFileByPath(personimage);
			}
			this.personService.removeById(id);
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}
	
}
